Micron Document
`:top
In `F33f`_`[computer graphics`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Computer_graphics]`_`f, `!reflection mapping`! or `!environment mapping`!`:cite-ref-1[`F5bf`_`[1`#cite-note-1]`_`f]`:cite-ref-2[`F5bf`_`[2`#cite-note-2]`_`f]`:cite-ref-3[`F5bf`_`[3`#cite-note-3]`_`f] is an efficient `F33f`_`[image-based lighting`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Image-based_lighting]`_`f technique for approximating the appearance of a `F33f`_`[reflective`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Specular_reflection]`_`f surface by means of a precomputed `F33f`_`[texture`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Texture_mapping]`_`f. The texture is used to store the `F33f`_`[image`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Digital_image]`_`f of the distant environment surrounding the rendered object.

Several ways of storing the surrounding environment have been employed. The first technique was `F33f`_`[sphere mapping`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Sphere_mapping]`_`f, in which a single texture contains the image of the surroundings as reflected on a `F33f`_`[spherical mirror`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Curved_mirror]`_`f. It has been almost entirely surpassed by `F33f`_`[cube mapping`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Cube_mapping]`_`f, in which the environment is projected onto the six faces of a cube and stored as six square textures or `F33f`_`[unfolded`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Net_(polyhedron)]`_`f into six square regions of a single texture. Other projections that have some superior mathematical or computational properties include the `F33f`_`[paraboloid`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Paraboloid]`_`f mapping, the `F33f`_`[pyramid`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Pyramid_(geometry)]`_`f mapping, the `F33f`_`[octahedron`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Octahedron]`_`f mapping, and the `F33f`_`[HEALPix`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=HEALPix]`_`f mapping.

Reflection mapping is one of several approaches to `F33f`_`[reflection rendering`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Reflection_(computer_graphics)]`_`f, alongside e.g. `F33f`_`[screen space reflections`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Screen_space_reflections]`_`f or `F33f`_`[ray tracing`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Ray_tracing_(graphics)]`_`f which computes the exact reflection by tracing a ray of light and following its `F33f`_`[optical path`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Optical_path]`_`f. The reflection color used in the shading computation at a `F33f`_`[pixel`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Pixel]`_`f is determined by calculating the reflection vector at the point on the object and mapping it to the `F33f`_`[texel`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Texel_(graphics)]`_`f in the environment map. This technique often produces results that are superficially similar to those generated by raytracing, but is less computationally expensive since the radiance value of the reflection comes from calculating the angles of `F33f`_`[incidence`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Angle_of_incidence_(optics)]`_`f and reflection, followed by a texture lookup, rather than followed by tracing a ray against the scene geometry and computing the radiance of the ray, simplifying the `F33f`_`[GPU`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=GPU]`_`f workload.

However, in most circumstances a mapped reflection is only an approximation of the real reflection. Environment mapping relies on two assumptions that are seldom satisfied:

1. All radiance incident upon the object being `F33f`_`[shaded`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Shading]`_`f comes from an infinite distance. When this is not the case the reflection of nearby geometry appears in the wrong place on the reflected object. When this is the case, no `F33f`_`[parallax`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Parallax]`_`f is seen in the reflection.
2. The object being shaded is `F33f`_`[convex`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Convex_set]`_`f, such that it contains no self-interreflections. When this is not the case the object does not appear in the reflection; only the environment does.

Environment mapping is generally the fastest method of rendering a reflective surface. To further increase the speed of rendering, the renderer may calculate the position of the reflected ray at each vertex. Then, the position is interpolated across polygons to which the vertex is attached. This eliminates the need for recalculating every pixel's reflection direction.

If `F33f`_`[normal mapping`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Normal_mapping]`_`f is used, each polygon has many face normals (the direction a given point on a polygon is facing), which can be used in tandem with an environment map to produce a more realistic reflection. In this case, the angle of reflection at a given point on a polygon will take the normal map into consideration. This technique is used to make an otherwise flat surface appear textured, for example corrugated metal, or `F33f`_`[brushed`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Brushed_metal]`_`f aluminium.

>>Contents

• `F0af`_`[Types`#types]`_`f
• `F0af`_`[Sphere mapping`#sphere-mapping]`_`f
• `F0af`_`[Cube mapping`#cube-mapping]`_`f
• `F0af`_`[HEALPix mapping`#healpix-mapping]`_`f
• `F0af`_`[History`#history]`_`f
• `F0af`_`[See also`#see-also]`_`f
• `F0af`_`[References`#references]`_`f
• `F0af`_`[External links`#external-links]`_`f

-─

>>Types

>>>Sphere mapping

`F33f`_`[Sphere mapping`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Sphere_mapping]`_`f represents the `F33f`_`[sphere`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Sphere]`_`f of incident illumination as though it were seen in the reflection of a reflective sphere through an `F33f`_`[orthographic`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Orthographic_projection_(geometry)]`_`f camera. The texture image can be created by approximating this ideal setup, or using a `F33f`_`[fisheye lens`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Fisheye_lens]`_`f or via `F33f`_`[prerendering`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Pre-rendering]`_`f a scene with a spherical mapping.

The spherical mapping suffers from limitations that detract from the realism of resulting renderings. Because spherical maps are stored as `F33f`_`[azimuthal projections`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Azimuthal_projection]`_`f of the environments they represent, an abrupt point of singularity (a "`F33f`_`[black hole`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Black_hole]`_`f" effect) is visible in the reflection on the object where texel colors at or near the edge of the map are distorted due to inadequate resolution to represent the points accurately. The spherical mapping also wastes pixels that are in the square but not in the sphere.

The artifacts of the spherical mapping are so severe that it is effective only for viewpoints near that of the virtual orthographic camera.

>>>Cube mapping

`F33f`_`[Cube mapping`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Cube_mapping]`_`f and other polyhedron mappings address the severe distortion of sphere maps. If cube maps are made and filtered correctly, they have no visible seams, and can be used independent of the viewpoint of the often-virtual camera acquiring the map. Cube and other polyhedron maps have since superseded sphere maps in most computer graphics applications, with the exception of acquiring `F33f`_`[image-based lighting`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Image-based_lighting]`_`f. Image-based lighting can be done with parallax-corrected cube maps.`:cite-ref-4[`F5bf`_`[4`#cite-note-4]`_`f]

Generally, cube mapping uses the same `F33f`_`[skybox`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Skybox_(video_games)]`_`f that is used in outdoor renderings. Cube-mapped reflection is done by determining the `F33f`_`[vector`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Vector_(geometric)]`_`f that the object is being viewed at. This `*camera ray`* is reflected about the `F33f`_`[surface normal`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Surface_normal]`_`f of where the camera vector intersects the object. This results in the `*reflected ray`* which is then passed to the `F33f`_`[cube map`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Cube_map]`_`f to get the `F33f`_`[texel`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Texel_(graphics)]`_`f which provides the radiance value used in the lighting calculation. This creates the effect that the object is reflective.

>>>HEALPix mapping

`F33f`_`[HEALPix`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=HEALPix]`_`f environment mapping is similar to the other polyhedron mappings, but can be hierarchical, thus providing a unified framework for generating polyhedra that better approximate the sphere. This allows lower distortion at the cost of increased computation.`:cite-ref-healpix-5-0[`F5bf`_`[5`#cite-note-healpix-5]`_`f]

>>History

In 1974, `F33f`_`[Edwin Catmull`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Edwin_Catmull]`_`f created an algorithm for "rendering images of bivariate surface patches"`:cite-ref-0-6-0[`F5bf`_`[6`#cite-note-0-6]`_`f]`:cite-ref-7[`F5bf`_`[7`#cite-note-7]`_`f] which worked directly with their mathematical definition. Further refinements were researched and documented by `F33f`_`[Bui-Tuong Phong`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Bui_Tuong_Phong]`_`f in 1975, and later `F33f`_`[James Blinn`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=James_Blinn]`_`f and `F33f`_`[Martin Newell`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Martin_Newell_(computer_scientist)]`_`f, who developed environment mapping in 1976; these developments which refined Catmull's original algorithms led them to conclude that "these generalizations result in improved techniques for generating patterns and texture".`:cite-ref-0-6-1[`F5bf`_`[6`#cite-note-0-6]`_`f]`:cite-ref-8[`F5bf`_`[8`#cite-note-8]`_`f]`:cite-ref-9[`F5bf`_`[9`#cite-note-9]`_`f]

Gene Miller experimented with spherical environment mapping in 1982 at `F33f`_`[MAGI`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Mathematical_Applications_Group]`_`f.

Wolfgang Heidrich introduced Paraboloid Mapping in 1998.`:cite-ref-10[`F5bf`_`[10`#cite-note-10]`_`f]

Emil Praun introduced Octahedron Mapping in 2003.`:cite-ref-11[`F5bf`_`[11`#cite-note-11]`_`f]

Mauro Steigleder introduced Pyramid Mapping in 2005.`:cite-ref-12[`F5bf`_`[12`#cite-note-12]`_`f]

Tien-Tsin Wong, et al. introduced the existing `F33f`_`[HEALPix`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=HEALPix]`_`f mapping for rendering in 2006.`:cite-ref-healpix-5-1[`F5bf`_`[5`#cite-note-healpix-5]`_`f]

>>See also

• `F33f`_`[Skybox (video games)`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Skybox_(video_games)]`_`f

>>References

`:cite-note-1`!1.`! `F0af`_`[↑`#cite-ref-1]`_`f "Higher Education | Pearson" (PDF).
`:cite-note-2`!2.`! `F0af`_`[↑`#cite-ref-2]`_`f "Directory | Computer Science and Engineering" (PDF). `*web.cse.ohio-state.edu`*. Retrieved 2025-02-18.
`:cite-note-3`!3.`! `F0af`_`[↑`#cite-ref-3]`_`f "Bump and Environment Mapping" (PDF). Archived from the original (PDF) on 2012-01-29.
`:cite-note-4`!4.`! `F0af`_`[↑`#cite-ref-4]`_`f "Image-based Lighting approaches and parallax-corrected cubemap". 29 September 2012.
`:cite-note-healpix-5`!5.`! `F0af`_`[↑`#cite-ref-healpix-5-0]`_`f Tien-Tsin Wong, Liang Wan, Chi-Sing Leung, and Ping-Man Lam. Real-time Environment Mapping with Equal Solid-Angle Spherical Quad-Map Archived 2007-10-23 at the `F33f`_`[Wayback Machine`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Wayback_Machine]`_`f, Shader X4: Lighting & Rendering, Charles River Media, 2006.
`:cite-note-0-6`!6.`! `F0af`_`[↑`#cite-ref-0-6-0]`_`f `:citerefblinnnewell1976`aBlinn, James F.; Newell, Martin E. (October 1976). "Texture and reflection in computer generated images". `*Communications of the ACM`*. `!19`! (10): 542–547. `F33f`_`[doi`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Doi_(identifier)]`_`f:10.1145/360349.360353. `F33f`_`[ISSN`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=ISSN_(identifier)]`_`f 0001-0782.
`:cite-note-7`!7.`! `F0af`_`[↑`#cite-ref-7]`_`f Catmull, E.A. Computer display of curved surfaces. Proc. Conf. on Comptr. Graphics, Pattern Recognition, and Data Structure, May 1975, pp. 11-17 (IEEE Cat. No. 75CH0981-1C).
`:cite-note-8`!8.`! `F0af`_`[↑`#cite-ref-8]`_`f "Computer Graphics". Archived from the original on 2021-02-24. Retrieved 2007-01-09.
`:cite-note-9`!9.`! `F0af`_`[↑`#cite-ref-9]`_`f "Reflection Mapping History".
`:cite-note-10`!10.`! `F0af`_`[↑`#cite-ref-10]`_`f Heidrich, W., and H.-P. Seidel. "View-Independent Environment Maps". Eurographics Workshop on Graphics Hardware 1998, pp. 39–45.
`:cite-note-11`!11.`! `F0af`_`[↑`#cite-ref-11]`_`f Emil Praun and Hugues Hoppe. "Spherical parametrization and remeshing". ACM Transactions on Graphics, 22(3):340–349, 2003.
`:cite-note-12`!12.`! `F0af`_`[↑`#cite-ref-12]`_`f Mauro Steigleder. "Pencil Light Transport". A thesis presented to the University of Waterloo, 2005.

>>External links

• The Story of Reflection mapping by `F33f`_`[Paul Debevec`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Paul_Debevec]`_`f
• NVIDIA's paper Cube Environment Mapping
• Approximation of reflective and transparent objects with environmental maps

`c`F0af`_`[↑ Back to top`#top]`_`f`a